package com.hbwxz.utils;

import lombok.extern.slf4j.Slf4j;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.StringJoiner;
import java.util.concurrent.TimeUnit;

/**
 * 线程工具类
 *
 * @author shenzw
 * @date 2023/12/10
 */
@Slf4j
public class CommonUtils {

    /**
     * 读取文件
     *
     * @param filePath 文件路径
     */
    public static String readFile(String filePath) {
//        File file = new File(filePath);
//        System.out.println(file.getAbsoluteFile());
        Path path = Paths.get(filePath);
        StringBuilder content = new StringBuilder();

        // 读取所有行
        try {
            List<String> lines = Files.readAllLines(path);

            // 打印每一行
            for (String line : lines) {
                content.append(line);
            }
        } catch (IOException e) {
            log.error("readFile is error.", e);
            return content.toString();
        }
        return content.toString();
    }


    /**
     * 休眠 秒（1000ms = 1s）
     *
     * @param seconds 秒数
     */
    public static void sleepSecond(long seconds) {
        try {
            TimeUnit.SECONDS.sleep(seconds);
        } catch (InterruptedException e) {
            log.error("sleepSecond is error.", e);
        }
    }

    /**
     * 休眠 毫秒
     *
     * @param millis 毫秒
     */
    public static void sleepMillis(long millis) {
        try {
            TimeUnit.MILLISECONDS.sleep(millis);
        } catch (InterruptedException e) {
            log.error("sleepMillis is error.", e);
        }
    }

    /**
     * 打印信息（时间戳 ｜ 线程id ｜ 线程名 ｜ 具体信息）
     *
     * @param message 具体信息
     */
    public static void printThreadLog(String message) {
        log.info("printThreadLog = {}", new StringJoiner(" | ")
                .add(String.valueOf(System.currentTimeMillis()))
                .add(String.format("%2d", Thread.currentThread().getId()))
                .add(Thread.currentThread().getName())
                .add(message));
    }
}
